using System;
using System.Collections.Generic;
using System.Text;
using App.Modelo.Interfaces;

namespace App.Modelo
{
   
    public class Cliente : ICliente
    {
        private Int32 id;
        private String nombreFantasia;
        private String razonSocial;
        private IDomicilio domicilio;
        private String telefono1;
        private String telefono2;
        private String email;
        private IDocumento documento;

        
        public Cliente() : base() { }


        public Cliente(String razonSocial)
            : this(razonSocial, razonSocial)
        { }

        public Cliente(String razonSocial, String nombreFantasia)
            : this()
        {
            this.RazonSocial = razonSocial;
            this.NombreFantasia = razonSocial;
        }


        public virtual Int32 Id
        {
            get { return id; }
            set { id = value; }
        }

        public virtual IDocumento Documento
        {
            get
            {
                if (documento == null)
                    documento = new Documento();

                return documento;
            }
            set { documento = value; }
        }

        public virtual String RazonSocial
        {
            get { return razonSocial; }
            set { razonSocial = value; }
        }

        public virtual String NombreFantasia
        {
            get { return nombreFantasia; }
            set { nombreFantasia = value; }
        }

        public virtual IDomicilio Domicilio
        {
            get { return domicilio == null ? domicilio = new Domicilio() : domicilio; }
            set { domicilio = value; }
        }

        public virtual String Telefono1
        {
            get { return telefono1; }
            set { telefono1 = value; }
        }

        public virtual String Telefono2
        {
            get { return telefono2; }
            set { telefono2 = value; }
        }

        public virtual String Email
        {
            get { return email; }
            set { email = value; }
        }



        public override string ToString()
        {
            return this.NombreFantasia;
        }



        public virtual bool NombreMatch(string p)
        {
            return NombreFantasia.ToLower().StartsWith(p.ToLower())
                || razonSocial.ToLower().StartsWith(p.ToLower());
        }
    }
}

